home *** CD-ROM | disk | FTP | other *** search
- as65c02 - version 4.1b - 11/22/84 - JHV [gvw]
- 1 ;******************************************
- 2 ; Test file for the 65c02 assembler - as65c02
- 3 ; assemble as
- 4 ; as65c02 -nisv assmtest
- 5 ; and compare output with assmtest.l
- 6 ;******************************************
- 7 ; ; comment treatment
- 8 ;******************************************
- 9 0010 aa = $10 ; ';' immediately after the '0'
- 10 0020 B = $20 space to comment subfield
- 11 0030 C = $30 tab to comment subfield
- 12 FFEE DEFGHIjkl = $FFEE
- 13 FFEE D =DEFGHIjkl
- 14 ;******************************************
- 15 ; Number formats
- 16 ;******************************************
- 17 0004 start *= $4 ; location counter adjust
- 18 0004 05 .byte %0101 ; binary number
- 19 0005 12 12 12 .byte 022,@22,^o22 ; octal numbers - three forms
- 20 0008 16 .byte 22 ; decimal number
- 21 0009 22 FF FF .byte $22,$ff,$FF ; hex - upper/lower case
- 22 000C 61 62 .byte 'a,'b ; single ASCII characters
- 23 ;******************************************
- 24 ; ; ASCII character string
- 25 ;******************************************
- 26 000E 61 62 63 .byte "abcd\t\n",0 ; tab and new line escaped
- 0011 64 09 0A
- 0014 00
- 27 ;******************************************
- 28 ; Operation checks
- 29 ;******************************************
- 30 0015 30 00 .word aa+B ; addition
- 31 0017 F0 FF .word aa-B ; subtraction
- 32 0019 00 02 .word aa*B ; multiplication
- 33 001B 02 00 .word B/aa ; division
- 34 001D 10 00 .word C%B ; modulo
- 35 001F 10 00 .word B!C ; exclusive OR
- 36 0021 CF FF .word ~C ; one's complement
- 37 0023 20 00 .word B&C ; logical AND
- 38 0025 30 00 .word aa|B ; logical OR
- 39 0027 EE 00 .word D\ ; low byte
- 40 0029 FF 00 .word D^ ; high byte
- 41 002B 2B 00 .word * ; current location
- 42 002D 10 00 .word aa,B,C
- 002F 20 00
- 0031 30 00
- 43 0033 00 08 .word B*<aa+C> ; one level of parenthesis
- 44 0035 FF EE .dbyt D ; high byte-low byte word
- 45 0037 FF 00 .word D/256,D%256
- 0039 EE 00
- 46 ;******************************************
- 47 ; Addressing Mode Check
- 48 ;******************************************
- 49 0100 *=$0100
- 50 0100 A9 10 lda =aa ; immediate addressing
- 51 0102 A9 10 lda #aa ; immediate addressing, alternate
- 52 0104 AD EE FF lda D ; direct addessing
- 53 0107 A5 10 LDA aa ; page zero addressing, aa < 256
- 54 0200 a1 = 512
- 55 01F4 a2 = 500
- 56 0109 A5 0C lda a1-a2 ; also page zero
- 57 010B 0A asl A ; accumulator addressing
- 58 010C 0A AsL a ; accumulator addressing also
- 59 010D 00 brk ; implied addressing
- 60 010E A1 10 lda (aa,X) ; indirect,X addressing
- 61 0110 B1 10 lda (aa),Y ; indirect,Y addressing
- 62 0112 B5 10 lda aa,X ; zero page,X addressing
- 63 0114 BD EE FF lda D,X ; absolute,X addressing
- 64 0117 B9 EE FF lda D,Y ; absolute,Y addressing
- 65 011A 90 EE bcc *-$10 ; relative addressing
- 66 011C 6C EE FF jmp (D) ; indirect addressing
- 67 011F 7C F4 01 jmp (a2,x) ; abs indexed indirect
- 68 0122 72 10 adc (aa) ; indirect zero page
- 69 0124 B6 10 ldx aa,Y ; zero page,Y addressing
- 70 0126 B6 10 ldx aa,y ; alternate index name
- 72 ;******************************************
- 73 ; opcode check
- 74 ;******************************************
- 75 0128 69 01 adc =01
- 76 012A 29 01 and =01
- 77 012C 32 10 and (aa)
- 78 012E 0A asl A
- 79 012F 90 00 bcc *+2
- 80 0131 B0 00 bcs *+2
- 81 0133 F0 00 beq *+2
- 82 0135 24 01 bit $01
- 83 0137 3C 01 03 bit $301,x
- 84 013A 34 01 bit $01,x
- 85 013C 30 00 bmi *+2
- 86 013E D0 00 bne *+2
- 87 0140 10 00 bpl *+2
- 88 0142 80 00 bra *+2
- 89 0144 00 brk
- 90 0145 50 00 bvc *+2
- 91 0147 70 00 bvs *+2
- 92 0149 18 clc
- 93 014A D8 cld
- 94 014B 58 cli
- 95 014C B8 clv
- 96 014D C9 01 cmp =01
- 97 014F D2 10 cmp (aa)
- 98 0151 E0 01 cpx =01
- 99 0153 C0 01 cpy =01
- 100 0155 3A dea
- 101 0156 C6 01 dec $01
- 102 0158 CA dex
- 103 0159 88 dey
- 104 015A 49 01 eor =01
- 105 015C 52 10 eor (aa)
- 106 015E 1A ina
- 107 015F E6 01 inc $01
- 108 0161 E8 inx
- 109 0162 C8 iny
- 110 0163 4C 66 01 jmp *+3
- 111 0166 20 69 01 jsr *+3
- 112 0169 A9 01 lda =01
- 113 016B B2 10 lda (aa)
- 114 016D A2 01 ldx =01
- 115 016F A0 01 ldy =01
- 116 0171 4A lsr A
- 117 0172 EA nop
- 118 0173 09 01 ora =01
- 119 0175 12 10 ora (aa)
- 120 0177 48 pha
- 121 0178 08 php
- 122 0179 DA phx
- 123 017A 5A phy
- 124 017B 68 pla
- 125 017C 28 plp
- 126 017D FA plx
- 127 017E 7A ply
- 128 017F 2A rol A
- 129 0180 6A ror A
- 130 0181 40 rti
- 131 0182 60 rts
- 132 0183 E9 01 sbc =01
- 133 0185 F2 10 sbc (aa)
- 134 0187 38 sec
- 135 0188 F8 sed
- 136 0189 78 sei
- 137 018A 85 01 sta $01
- 138 018C 92 10 sta (aa)
- 139 018E 86 01 stx $01
- 140 0190 84 01 sty $01
- 141 0192 9C 01 03 stz $301
- 142 0195 9E 01 03 stz $301,x
- 143 0198 64 01 stz $01
- 144 019A 74 01 stz $01,x
- 145 019C AA tax
- 146 019D A8 tay
- 147 019E 1C 01 03 trb $301
- 148 01A1 14 01 trb $01
- 149 01A3 0C 01 03 tsb $301
- 150 01A6 04 01 tsb $01
- 151 01A8 BA tsx
- 152 01A9 8A txa
- 153 01AA 9A txs
- 154 01AB 98 tya
- 155 .title some way for a listing
- 156 .sbttl check for .ifeq
- 157 .ifeq 0
- 158 01AC 01 02 03 .byte 1,2,3,$34,@10
- 01AF 34 08
- 159 .endc
- 160 .ifne 0
- 161 .word 1234,$4354,@7777
- 162 .endc
- 163 ; now check nesting
- 164 .ifeq 0
- 165 01B1 AD B1 01 lda .
- 166 .ifne 0
- 167 m2 .asciz /help/
- 168 .endc
- 169 01B4 ED EF F2 m3 nasc <more of same>
- 01B7 E5 A0 EF
- 01BA E6 A0 F3
- 01BD E1 ED E5
- 170 .endc
- 171 msb ON
- 172 01C0 E8 E9 E7 .asciz /high order bits on /
- 01C3 E8 A0 EF
- 01C6 F2 E4 E5
- 01C9 F2 A0 E2
- 01CC E9 F4 F3
- 01CF A0 EF EE
- 01D2 A0 00
- 173 01D4 F3 E8 EF nasc <should not be affected> 1
- 01D7 F5 EC E4
- 01DA A0 EE EF
- 01DD F4 A0 E2
- 01E0 E5 A0 E1
- 01E3 E6 E6 E5
- 01E6 E3 F4 E5
- 01E9 E4 00
- 174 msb off
- 175 01EB 68 69 67 .asciz /high order bits off/
- 01EE 68 20 6F
- 01F1 72 64 65
- 01F4 72 20 62
- 01F7 69 74 73
- 01FA 20 6F 66
- 01FD 66 00
- 176 01FF F3 F4 E9 nasc <still not affected> 0
- 0202 EC EC A0
- 0205 EE EF F4
- 0208 A0 E1 E6
- 020B E6 E5 E3
- 020E F4 E5 E4
- 177 0213 m31 org *+2
- 178 0213 35 02 m4 .word .+34
- 179 0217 m41 org .+2
- 180 0217 00 m5 .byte
- 181 ; now lets try some blank lines
- 182 0218 74 68 69 .asciz /this is ok?/
- 021B 73 20 69
- 021E 73 20 6F
- 0221 6B 3F 00
- 183
- 184 0224 E8 EF F7 nasc <how about this>
- 0227 A0 E1 E2
- 022A EF F5 F4
- 022D A0 F4 E8
- 0230 E9 F3
- 185
- 186 0232 00 0E .byte 0,$e
- 187
- 188
- 189 0234 02 00 .word 2 ;how about two in a row
- 190 .title what does the control l mean
- 191 .sbttl perhaps is the Dec 20 way of new page, anyway ignore it
- 192 .ifeq 1
- 193 .sbttl Lets check to see if we skip
- 194 .asciz /this should not assemble/
- 195 .sbttl these lines
- 196 .endc
- 197 .sbttl now this is the living end
- 198 0013 aaaa equ aa+3
- 199 023C aaa equ abc+5
- 200 0236 03 .byte 3
- 201 0237 F4 E8 E5 abc nasc <the end>
- 023A A0 E5 EE
- 023D E4
- 202 023E FF .byte 255
- 203 0100 org $100
- 204 0100 31 00 .asciz /1/
- 205 0102 4C 18 01 jmp d
- 206 0105 4C 1A 01 jmp d+2
- 207 0108 AD 1A 01 lda cba
- 208 010B AD 33 02 lda abc-4
- 209 010E 03 .byte 3
- 210 010F B1 nasc <1>
- 211 0110 B2 B2 00 nasc <22> 1
- 212 011F baaa = 7+d ; can you handle this
- 213 0113 F4 E8 F2 nasc <three> 0
- 0116 E5 E5
- 214 0118 A9 04 d lda #4
- 215 011A 29 09 cba .word 2345
- 216 011C bbc
- 217 011C A6 01 ldx d+3^
- 218 011E AD 1A 01 lda cba
- 219 0121 AD 1F 01 lda baaa
- 220 0124 4C 1C 01 jmp bbc
- 221 0127 A9 03 lda #3
- 222 0129 A9 17 rep lda #23
- 223 00FE org $fe
- 224 .ifeq <.\-$ff> ;what does the loc counter say
- 225 nop
- 226 .endc
- 227 .ifeq <.\-$fe> ; loc ctr
- 228 00FE EA nop
- 229 00FF EA nop
- 230 .endc
-
- aa 10:00 0010
- B 20:00 0020
- C 30:00 0030
- DEFGHIjkl EE:FF FFEE
- D EE:FF FFEE
- start 04:00 0004
- a1 00:02 0200
- a2 F4:01 01F4
- m2 00:00 0000
- m3 B4:01 01B4
- m31 13:02 0213
- m4 13:02 0213
- m41 17:02 0217
- m5 17:02 0217
- aaaa 13:00 0013
- aaa 3C:02 023C
- abc 37:02 0237
- d 18:01 0118
- cba 1A:01 011A
- baaa 1F:01 011F
- bbc 1C:01 011C
- rep 29:01 0129
-